首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏沉默王二

    HashMap 精选面试题(背诵版)

    对于 Java 求职者来说,HashMap 可谓是重中之重,是面试的必考点。然而 HashMap 的知识点非常多,复习起来花费精力很大。 JDK 7 中,HashMap 由“数组+链表”组成,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的。 在 JDK 8 中,HashMap 由“数组+链表+红黑树”组成。 HashMap用的哪种? 10、HashMap 的put方法流程? 11、HashMap 的扩容方式? HashMap 在容量超过负载因子所定义的容量之后,就会扩容。 详情参照这篇 12、一般用什么作为HashMap的key?

    96530编辑于 2021-12-23
  • 来自专栏小赵的Java学习

    面试题HashMap和HashTable的区别

    1、两者父类不同 HashMap是继承自AbstractMap类,而Hashtable是继承自Dictionary类。 2、对外提供的接口不同 Hashtable比HashMap多提供了elments() 和contains() 两个方法。 HashMap:key可以为null,但是这样的key只能有一个,因为必须保证key的唯一性;可以有多个key值对应的value为null。 4、安全性不同 HashMap是线程不安全的,在多线程并发的环境下,可能会产生死锁等问题,因此需要开发人员自己处理多线程的安全问题。 虽然HashMap是线程不安全的,但是它的效率远远高于Hashtable,这样设计是合理的,因为大部分的使用场景都是单线程。

    19720编辑于 2022-12-02
  • 来自专栏全栈程序员必看

    HashMap常见面试题_java面试题大汇总

    11.jdk8中对HashMap做了哪些改变? 12.HashMap,LinkedHashMap,TreeMap有什么区别? 13.HashMap&TreeMap&LinkedHashMap使用场景? 14.HashMap和HashTable有什么区别? 15.Java中的另一个线程安全的与HashMap极其类似的类是什么? 7.HashMap中put方法的过程? ,而这是一个非常耗性能的操作,所以如果我们已经预知HashMap中元素的个数,那么预知元素的个数能够有效的提高HashMap的性能。 ①、HashMap是线程不安全的,HashTable是线程安全的; ②、由于线程安全,所以HashTable的效率比不上HashMap; ③、HashMap最多只允许一条记录的键为null,

    57520编辑于 2022-09-22
  • 来自专栏全栈程序员必看

    hashmap面试题简书_三年php面试题

    这篇文章仅限小编个人的理解,小编不是Java方向的,只是对Java有很高的学习兴趣 如果有什么不对的地方还望大佬指点 HashMap的底层是数组+链表,(很多人应该都知道了) JDK1.7的是数组 8的时候,会变成红黑树 在红黑树的元素小于6的时候会变成链表 元素进行尾插 HaspMap的数组默认大小为16 数组也叫做Hash桶 (貌似听说这个值和阿里巴巴Java开发手册好像有点关系) HashMap 元素的下标是 HashCode(元素) & (数组的长度-1) HashMap的扩容 Resize 扩容的话,这里有一个值叫做loadFactor(阈值),默认值为0.75; 当数组的 元素数量>数组大小 , JDK1.7的是分段数组,有Segment锁(继承于ReentrantLock)加速一小段保证并发 JDK1.8 是和HashMap一样了,数组+链表(或者红黑树) Synchronized( 这一点与乐观锁,SVN的思想是比较类似的) 使用HashTable(基本是废弃的) HashTable就是把HashMap套上了一个Synchronized Collections.synchronizedMap

    27020编辑于 2022-09-22
  • 来自专栏云计算linux

    JAVAEE面试题之一HASHMAP精讲

    JAVA系列面试题 特点 1.高频面试 2.力求精深 3.贴近企业 4.迭代升级 1.HashMap的数据结构 基本功的问题,难度指数:1星; 1.7 数组+链表; 1.8 数组+链表+红黑树 2.当两个对象的 在HashMap这种数据结构上,存储的元素,hashCode一样,如果说,内容一致,则不能添加到同一个HashMap对象;否则,内容不一致,在此结构之后,变成链表格式。 3.初始容量是多少? 基本功,难度指数:2星 首先是HashMap数组的存储结构,在hashCode()冲突的时候,长度够用情况下,变成链表格式; 其次:长度》=8,最小容量是64的情况下,会变成红黑树。 难度指数:3星-4星 考察知识点:HashMap基本功。 设置一个超过阈值范围的,初始容量: 初始容量*0.75>1024 这里使用到了Oracle官方的插件 <! 执行测试 } @Benchmark public void noSizeTest(Blackhole blackhole) { Map map = new HashMap

    19210编辑于 2024-12-07
  • 来自专栏全栈程序员必看

    JAVA面试题HashMap和Hashtable的区别

    HashMap和Hashtable的区别 1.共同点:都是双列集合,底层都是哈希算法 2.区别: * 1.HashMap是线程不安全的,效率高,JDK1.2版本 * Hashtable是线程安全的 { public static void main(String []args){ HashMap<String,Integer> hm=new HashMap<>(); 虽然Hashtable比HashMap出现的早一些,但是现在Hashtable基本上已经被弃用了。而HashMap已经成为应用最为广泛的一种数据类型了。 因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。 HashMap为了加快hash的速度,将哈希表的大小固定为了2的幂。当然这引入了哈希分布不均匀的问题,所以HashMap为解决这问题,又对hash算法做了一些改动。

    97210编辑于 2022-10-01
  • 来自专栏Java极客技术

    一文解读所有HashMap面试题

    HashMap 说到 HashMap 想必大家从脑海中直接复现出了一大堆的面试题HashMap 的数据结构 JDK7 和 JDK8 HashMap哪里不一样 HashMap是否安全 HashMap 的扩容机制 说到这里,我们就来挨着分析一下这个 HashMap 的这写面试题HashMap 的数据结构 这个 HashMap 的数据结构,面试官这个问题,属于那种可大可小的,往大了说,那就是需要你把所有的关于 HashMap 中的内容都详细的解释明白,但是如果要是往小了说,那就是介绍一下内部结构 HashMap是否安全 一说这个,肯定都是非常基础的面试题,都知道 HashMap 是属于那种线程不安全的类,为什么不安全,他不安全到底会提现在哪个地方,难道面试的时候,你就只会说他的内部没有被 synchronize HashMap 的扩容机制 我们在上面也都列举了一下 HashMap 的一些关键参数,接下来,就来分析他的扩容是怎么实现的 , public HashMap(int initialCapacity

    35820编辑于 2022-12-04
  • 来自专栏java一日一条

    Java面试题:如何对HashMap按键值排序

    Java中HashMap是一种用于存储“键”和“值”信息对的数据结构。不同于Array、ArrayList和LinkedLists,它不会维持插入元素的顺序。 因此,在键或值的基础上排序HashMap是一个很难的面试问题,如果你不知道如何解决的话。下面让我们看看如何解决这个问题。 ? 1. HashMap存储每对键和值作为一个Entry<K,V>对象。 例如,给出一个HashMap, ? 键的每次插入,都会有值对应到散列映射上,生成一个Entry <K,V>对象。通过使用这个Entry <K,V>对象,我们可以根据值来排序HashMap。 2.创建一个简单的HashMap,并插入一些键和值。 ? 3.从HashMap恢复entry集合,如下所示。 ? 4.从上述mapEntries创建LinkedList。 由于HashMap不保持顺序,因此我们要使用LinkedHashMap。 ? 10.完整的代码如下。 ? ? ?

    2.2K20发布于 2018-09-18
  • 来自专栏cwl_Java

    经典面试题-Java中,HashMap和Hashtable的区别?

    本文链接:https://blog.csdn.net/weixin_42528266/article/details/103099482 HashMap把Hashtable的contains方法去掉了 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。 Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 就HashMap与HashTable主要从三方面来说。 ,而HashMap是线程序不安全的,不是同步 3.值:只有HashMap可以让你将空值作为一个表的条目的key或value

    3.2K20发布于 2019-11-18
  • 来自专栏XiaoLin笔记

    内含扩容源码的面试题,目标是手写HashMap

    Set HashSet(无序,唯一): 基于 HashMap 实现的,底层采用 HashMap 来保存元素。 Map HashMap: JDK1.8 之前 HashMap 由数组+链表组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。 HashMap的关系图 ? HashMap 中的底层原理实现 JDK 1.8 之前     JDK1.8 之前 HashMap 底层是数组 + 链表,HashMap 会使用 hashCode 以及扰动函数处理 key ,然后获取一个 默认loadFactor等于0.75,当HashMap里面容纳的元素已经达到HashMap数组长度的75%时,表示HashMap太挤了,需要扩容,在HashMap的构造器中可以定制loadFactor。

    54320发布于 2021-08-16
  • 来自专栏别明天就今天吧

    面试题-JAVA之HashMap-put方法源码分析

    HashMap的底层数据结构是数组+链表+红黑树,数组的作用显而易见,时间复杂度最低O(1),默认大小是16,数组的下标索引是通过key的hashcode计算出来的,当多个key计算出的hashcode 相同时,数组元素就会转化为链表,时间复杂度升为O(n),当链表的长度大于8并且数组的大小超过64时,链表会转化为红黑树,时间复杂度为O(log(n)),从源码角度来分析下HashMap的几个核心方法。

    91520发布于 2020-09-07
  • 来自专栏码不停蹄的小鼠松

    HashMap面试题,看这一篇就够了!

    序言 在后端的日常开发工作中,集合是使用频率相当高的一个工具,而其中的HashMap,则更是我们用以处理业务逻辑的好帮手,同时HashMap的底层实现和原理,也成了面试题中的常客。 一、JDK7中的HashMap底层实现 1.1 基础知识 不管是1.7,还是1.8,HashMap的实现框架都是哈希表 + 链表的组合方式。结构图如下: ? HashMap中的Iterator实现原理也不过如此,就是这么朴实无华,是不是都想动手自己撸一个HashMap的实现了?嗯,你可以的!!! $HashIterator.nextNode(HashMap.java:1437) at java.util.HashMap$EntryIterator.next(HashMap.java:1471) 二、JDK8中的HashMap底层实现 前面我们已经详细剖析了HashMap在JDK7中的实现,不知大家有没有发现其中可以优化的地方?

    1.4K10发布于 2019-12-18
  • 来自专栏IT技术精选文摘

    面试题:一个HashMap对象占多少字节

    HashMap内部结构比较复杂,除了一些基本的类型,还有比较复杂一点的集合类型。 以 Map<String,String> map = new HashMap<String,String>(); 这时候我们计算一下他的占用空间情况: ? 总空间为:48+16=64字节 hashmap:头部(8)+int(4*4)+float(4)+table数组引用(4)+entrySet引用(4)+keySet引用(4)+values引用(4)+padding (4)=48字节 table:头部(8+4)+长度(4)=16字节 然后我们put进去一条数据:map.put( "100002", "张明"); 当HashMap初始化的时候,他会开辟一个长度为16 hashmap:头部(8)+int(4*4)+float(4)+table数组引用(4)+entrySet引用(4)+keySet引用(4)+values引用(4)+padding(4)=48字节 table

    4.5K60发布于 2019-06-03
  • 来自专栏Java面试

    Java面试题HashMap为什么线程不安全、ConcurrentHashMap原理、ConcurrentHashMap与HashMap区别、Map总结

    .HashMap与Hashtable的区别5.HashMap、Hashtable、ConcurrentHashMap区别6.为什么 HashMap 采用拉链法而不是开放地址法? 7.Map总结还记得 HashMap的实现原理、jdk1.7与jdk1.8的HashMap有什么区别吗? 如果忘记可以到这里重新温习:Java面试题:ArrayList底层实现原理、HashMap的实现原理、HashMap的jdk1.7和jdk1.8有什么区别1.HashMap 为什么线程不安全1.1 概述 ——HashMap线程不安全的体现、原因、改善HashMap是线程不安全的,它是非同步的数据结构。 3.2 工作原理3.2.1 HashMapHashMap的工作原理、底层数据结构 可以查看 Java面试题:ArrayList底层实现原理、HashMap的实现原理、HashMap的jdk1.7和jdk1.8

    94310编辑于 2024-06-12
  • 来自专栏全栈程序员必看

    hashmap面试题简书_java面试问答题

    JAVA中的HashMap面试题整理 JDK1.7版本,HashMap的数据结构是什么? 数组+单向链表 什么叫做Hash桶 数组中的单向链表 HashMap的数组长度为什么必须是2的幂? 1 << 30 HashMap数组最大长度为什么是1 << 30? 因为数组长度必须是2的幂并且HashMap数组最大长度的变量为int类型,所有1<<30 什么叫做Hash碰撞/冲突? 两个对象的hash值一样,导致在数组中的下标一样 HashMap何时扩容? 元素个数>=阈值,并且存入数据的位置不等于null HashMap扩容机制是什么? 原来的2倍 HashMap存入null键的位置? hash数组下标为0的位置 什么叫做Hash回环? JDK1.8版本HashMap为什么添加红黑树的数据结构?

    47320编辑于 2022-09-22
  • 来自专栏别明天就今天吧

    面试题-JAVA之HashMap-get、resize方法源码分析

    HashMap的get方法是通过key获取对应Value的方法,resize方法则是初始化或扩容数组的方法,来看看是如何实现的; 1.get方法 ?

    51230发布于 2020-09-07
  • 来自专栏全栈程序员必看

    hashmap的实现原理面试_jvm面试题总结及答案

    因为HashMap的好处非常多,我曾经在电子商务的应用中使用HashMap作为缓存。 可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回false HashMap比较快,因为是使用唯一的键来获取对象 HashSet较HashMap来说比较慢 ④面试题 HashMap的工作原理是近年来常见的Java面试题。 几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。 这是另外一个很热门的面试题,因为ConcurrentHashMap越来越多人用了。

    72210编辑于 2022-09-30
  • 来自专栏Java

    字节跳动面试题-HashMap底层原理与HashTable的区别

    字节跳动面试题-HashMap底层原理与HashTable的区别 HashMap底层原理解析 1. 在HashMap内部,通过使用哈希函数将键映射到存储桶中。 2. HashMap的数据结构 HashMap的底层数据结构主要包括数组和链表(或红黑树)。 void main(String[] args) { // 创建一个HashMap实例 HashMap<String, Integer> hashMap = new HashMap HashMap与HashTable的区别 1. 线程安全性 HashMap是非线程安全的:HashMap不是同步的,即在多线程环境下不保证线程安全。 实例 HashMap<String, Integer> hashMap = new HashMap<>(); hashMap.put("one", 1);

    42610编辑于 2025-01-21
  • 来自专栏我们一无所有,我们巍然矗立

    HashMap1.8源码解读及相关面试题解读

    文章目录 往期文章 前言 一、HashMap的数据结构 二、HashMap源码解读 三、HashMap使用优化 四、相关面试题 总结 往期文章 HashMap1.7源码解读 前言 随着工作年限的增加, 在jdk1.7中,HashMap由数组+链表实现,基于这种结构实现的HashMap在Hash碰撞较多的情况下,会导致链表长度过长,时间复杂度为O(n);效率较低。 四、相关面试题 1. 为什么重写Equals还要重写HashCode方法 为了使诸如HashMap这样的哈希表正常使用。具体规定如下: equals相等,hashcode一定相等。 HashMap如何避免内存泄漏问题 当以自定义对象作为HashMap的key时,如果没有重写Equals方法和HashCode方法,会导致对象一直往HashMap里面存储,并且,无法被GC垃圾回收掉, HashMap底层采用单链表还是双链表 HashMap底层为单向链表 6.

    53110编辑于 2021-12-06
  • 来自专栏一枝花算不算浪漫的专栏

    一道简单的HashMap面试题所想到的...

    前言 看到一个JDK1.7和JDK1.8中关于HashMap的一个面试题: JDK1.7和1.8中HashMap中链表的插入的方式有什么不同? 原以为自己对HashMap的源码理解的还算可以了,应该足够应付面试了。但是看到这个问题自己确实也是懵逼了一下。 查了下资料,答案是JDK1.7是插入到首部,1.8改为了尾部。 假设:HashMap中table的大小为2,有两个元素3.7,5 这时会进行扩容,图如下: ? 图画的很简陋,自己看着边看代码边想出来的。 果然看似不起眼的设计都是有自己独特的道理,又加深了自己对HashMap的理解了,每天都能进步一点点,真好。 感谢掘金文章的帮助:HashMap为何从头插入改为尾插入

    55330发布于 2018-12-14
领券